namespace :aad do
  task :css do 
    generar_todo
  end
end

def generar_css(n, prefix = nil, ancho = 600, separacion = 12)
  disponible = ancho - (n - 1) * separacion
  interno = disponible / n
  externo = interno + (n > 1 ? separacion : 0)

  salida = texto(n, externo, interno, prefix)
  (2...n).each{|i| salida << texto(n , externo * i , externo * i - separacion, prefix, "entradas_#{i}_de_#{n}" ) << "" }
  salida
end

def texto(n, externo, interno, prefix = nil, clase = 'entrada')
  salida = []
  salida << "/* #{clase == 'entrada' ? n : clase} por fila */"  
  if clase == "entrada"
    salida << "#{prefix}div.formulario div.entradas_#{n} label {"
    salida << "    width: #{externo}px;"
    salida << "}" << ""
  end
  salida << "#{prefix}div.formulario div.entradas_#{n} label.#{clase} {"
  salida << "    width: #{externo}px;"
  salida << "}" << ""
  salida << "#{prefix}div.formulario div.entradas_#{n} label input.#{clase},"
  salida << "#{prefix}div.formulario div.entradas_#{n} label textarea.#{clase},"
  salida << "#{prefix}div.formulario div.entradas_#{n} label span.date_#{clase} {"
  salida << "    width: #{interno}px;"
  salida << "}" << ""
  salida << "#{prefix}div.formulario div.entradas_#{n} label select.#{clase} {"
  salida << "    width: #{interno+3}px;"
  salida << "}" << ""
end

def generar_todo(ancho=600, separacion=12)
  salida = []
  salida << "/* generar_css(ancho= #{ancho}, separacion = #{separacion}) */" << ""
  (2..6).each do |i| 
    salida << generar_css(i)
  end
  (2..6).each do |i| 
    salida << generar_css(i, '#pane_control ', 564, 12)
  end
  (2..3).each do |i| 
    salida << generar_css(i, '#right ', 200, 6)
  end
  salida << "/* end # generar_css */"
  open("css_multicolumna.css", "w").write(salida.flatten.join("\n"))
end
